import axios, { InternalAxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
import { useRouter } from 'next/navigation';

export const request = axios.create({
  baseURL: process.env.NEXT_PUBLIC_API_BASE_URL,
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
  },
});

// 请求拦截器
request.interceptors.request.use(
  (config: InternalAxiosRequestConfig) => {
    // 在这里可以添加统一的请求处理，比如添加token等
    const token = localStorage.getItem('token');
    if (token && config.headers) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  (error: AxiosError) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
request.interceptors.response.use(
  (response: AxiosResponse) => {
    // 在这里可以处理统一的响应逻辑
    return response.data;
  },
  (error: AxiosError) => {
    // 在这里可以处理统一的错误逻辑
    if (error.response) {
      const router = useRouter();
      switch (error.response.status) {
        case 401:
          // 处理未授权
          // toast({
          //   variant: "destructive",
          //   title: "未授权",
          //   description: "请重新登录",
          // });
          router.push('/login'); // 跳转到登录页面
          break;
        case 404:
          // 处理未找到
          // toast({
          //   variant: "destructive",
          //   title: "请求的资源不存在",
          // });
          router.push('/404'); // 跳转到404页面
          break;
        case 500:
          // 处理服务器错误
          // toast({
          //   variant: "destructive",
          //   title: "服务器内部错误",
          //   description: "请稍后再试",
          // });
          break;
        default:
          break;
      }
    }
    return Promise.reject(error);
  }
);
